import json
import re,os
from datetime import datetime


def get_cronb_closed():
    # 获取当前日期
    current_date = datetime.now().strftime("%Y-%m-%d")
    # 定义日志文件前缀
    log_file_prefix = f"TaskAfterClose_{current_date}"

    # 拼接日志文件名
    file_name = f"{log_file_prefix}_main_get_ts_data_close.log"

    # 从文件中读取日志数据
    log_dir = "/var/log/"
    log_file_name = os.path.join(log_dir, file_name)
    # 输出结果
    nofileInfo = []
    nofileInfo.append({
                "timestamp": datetime.now().strftime('%m月%d日 %H时%M分'),
                "level": 'INFO',
                "message": 'today无最新日志文件'
            })
    nofileInfo = [{
        "timestamp": datetime.now().strftime('%m月%d日 %H时%M分'),
        "level": 'INFO',
        "message": 'today无最新日志文件'
    }]
    
    try:
        with open(log_file_name, "r", encoding="utf-8") as log_file:
            log_data = log_file.read()
    except FileNotFoundError:                
        return nofileInfo
    except UnicodeDecodeError:
        nofileInfo[0]["message"] = f"错误：无法使用 UTF-8 编码读取文件 {log_file_name}。"
        nofileInfo[0]["level"] = "ERROR"
        return nofileInfo
    except Exception as e:
        nofileInfo[0]["message"] = f"发生了一个未知错误：{e}"
        nofileInfo[0]["level"] = "ERROR"
        return nofileInfo
    

    # 初始化日志列表
    log_entries = []

    # 按行解析日志数据
    for line in log_data.strip().split('\n'):
        # 匹配日志行的格式
        match = re.match(r'(\d{2}月\d{2}日 \d{2}时\d{2}分) - (\w+) - (.*)', line)
        
        if match:
            timestamp, level, message = match.groups()
            log_entries.append({
                "timestamp": timestamp,
                "level": level,
                "message": message
            })
        else:
            # 处理没有时间戳的行
            if log_entries:
                log_entries[-1]["message"] += f" {line.strip()}"

    # 添加开始和结束时间的日志
    start_time_match = re.search(r'开始时间：\s*(.*)', log_data)
    end_time_match = re.search(r'结束时间：\s*(.*)', log_data)
    duration_match = re.search(r'总共耗时（分钟）：\s*(.*)', log_data)

    if start_time_match and end_time_match and duration_match:
        start_time = start_time_match.group(1).strip()
        end_time = end_time_match.group(1).strip()
        duration = duration_match.group(1).strip()
        
        log_entries.append({
            "timestamp": start_time,
            "level": "INFO",
            "message": f"开始时间: {start_time}, 结束时间: {end_time}, 总耗时（分钟）: {duration}"
        })

    return log_entries
  
